/*
 * expr.lex : Scanner for a simple
 *            expression parser.
 */

%{
   #include "y.tab.h"

   /*-------------------
   | To Do
   |--------------------
   | read_int
   | 
   | 
   | 
   | 
   | 


   */
%}

%%

"int"                        { yylval.val = yytext;  return(token_int); }
"static"                     { yylval.val = yytext;  return(token_static); }
"return"                     { yylval.val = yytext;  return(token_return); }
"exit"                       { yylval.val = yytext;  return(token_exit); }
"if"                         { yylval.val = yytext;  return(token_if); }
"else"                       { yylval.val = yytext;  return(token_else); }
"while"                      { yylval.val = yytext;  return(token_while); }
"void"                       { yylval.val = yytext;  return(token_void); }


[0-9]+                       { yylval.val = yytext;  return(nb_entier); }
[a-zA-Z0-9][a-zA-Z0-9_]*     { yylval.val = yytext;  return(identificateur); }



"=="       { return(equal); }
"!="       { return(not_equal); }
"<="       { return(inf_equal); }
">="       { return(sup_equal); }
"||"       { return(logic_or); }
"&&"       { return(logic_and); }

"!"        { return('!'); }
"="        { return('='); }
"+"        { return('+'); }
"-"        { return('-'); }
"*"        { return('*'); }
"/"        { return('/'); }
"%"        { return('%'); }
"("        { return('('); }
")"        { return(')'); }
"["        { return('['); }
"]"        { return(']'); }
"{"        { return('{'); }
"}"        { return('}'); }
"<"        { return('<'); }
">"        { return('>'); }

";"        { return(';'); }
","        { return(','); }
\"        { return('\"'); }

\n         {  }
[\t ]*     { /* throw away whitespace */ }
.          { yyerror("Illegal character");   }

%%



